The invention relates to computer networks, and more particularly, to communications between data storage devices and clients in computer networks.
The growth of client/server based computing, where applications and other resources are distributed among a network of computers having one or more servers and clients, is driven by a need for fast, reliable and secure access to vast amounts of shared data in organizations. As the number of clients serviced by the server grows, along with increased client data processing capability made possible by advances in microprocessor technology, conventional servers can be overloaded with requests from clients.
In response, a number of architectures have been developed to address server overloads, including distributed processor architecture, symmetric multi-processor architecture, parallel processor architecture and hypercube architecture. However, some of these architectures still direct file requests coming over the network to a host processor, which in turn makes appropriate requests to an input/output (I/O) processor controlling data storage devices such as disks in satisfaction of the request from a client. Data from disks is buffered in a memory section before being transmitted to the requester under the control of the host processor. Such micro-management by the host processor can result in delays and can be wasteful of the host processor's capabilities. Additionally, the host processor, if overloaded, may itself become a bottleneck in the transfer of data between the disk and the requesting client. Further, when the processor is involved in the data processing loop, host bus bandwidth may be reduced, as data from disks is typically transferred over a bus and stored in a host memory before being sent to the requesting client over the bus, thus reducing available bus bandwidth.
To minimize this problem, certain architectures shift the I/O load to dedicated sub-systems that handle disk requests. However, even such sub-systems deploy local processors to handle requests arriving over the network and to supervise disk controllers in transferring data. These processors still are intimately involved with the file transfer process. Further, the bus contention problem still exists with respect to local buses supporting the local processor. Thus, the potential bottleneck still exists whenever the local processor or the host processor is directly involved with the disk I/O.
As intimate involvements of the processor in disk I/O handling are inefficient and uneconomical, what is needed is an apparatus in a file server that can directly transfer data from data storage devices to the client over the network with minimal involvement by any processor. Moreover, what is needed is an apparatus which minimizes bus contention and provides high data availability and fast access to shared data with minimal overheads.